package com.qf.spring.advice;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;

import java.util.Arrays;

/**
 * @author 郑大仙丶
 * @version 1.0
 * @date 2021/3/22 11:49
 */
public class WriteLogAdvice {

    // 前置增强
    public void writeLog(JoinPoint jp){
        System.out.println("写日志！！！！！！！！！！！！");
    }


    // 后置增强
    public void afterReturning(JoinPoint jp,Object result){
        // 被代理类是谁？      执行的方法名？    方法的参数
        Object[] args = jp.getArgs();
        Object target = jp.getTarget();
        String name = jp.getSignature().getName();
        System.out.println("方法的参数：" + Arrays.toString(args));
        System.out.println("被代理类为：" + target);
        System.out.println("执行方法为：" + name);
        System.out.println("我是后置增强!!!!!!!!!!!!! 返回结果为:" + result);
    }

    // 环绕增强
    public void around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("我是前置增强..............");
        Object result = pjp.proceed();
        System.out.println("我是后置增强..............,返回结果为:" + result);
    }


/*    public void invoke(Proxy obj,Method method,Object[] args){
        System.out.println("我是前置增强..............");
        Object result = method.invoke(args);
        System.out.println("我是后置增强..............,返回结果为:" + result);

    }*/
}
